This invention relates to the handling of imaging jobs in an imaging-job system, and in particular to the function of deciding issues relating to the handling of a new imaging job based upon acquired knowledge regarding the current statuses of busyness of plural, currently engaged imaging output devices of any category. A preferred and best-mode embodiment of, and manner of practicing, the invention are described and illustrated herein, for representational purposes, in the context of handling print (imaging) jobs, and more specifically to the maximizing of print-job handling through the delivery of new print jobs to different ones of plural, currently engaged printers based upon knowledge of those printers' respective current statuses of busyness.
Notwithstanding the specific use of a printing environment, and the distribution to printers of new print jobs, to illustrate the invention throughout this disclosure, it should be understood that other imaging environments and devices may utilize the invention. Included among, but not limiting, other such environments are those involving faxing, scanning, copying, document archiving and retrieving, document converting and manipulation, and document transferring.
As will be seen, the present invention, to accomplish the above-mentioned behavior, features the practice of determining the respective remainders in the amounts of current-job work still to be performed by the several imaging output devices before they will become available to take on a new job. This determination may be expressed, for example, as (a) assessing completion job sizes relating to the current jobs, and/or as (b) assessing the times-to-availability of the respective, associated output devices.
In a printing environment where one desires to complete the outputting of a print job as soon as possible, the user sends the print job to a compatible printer (or device) believed to be the one which will complete the job the soonest. Several methods exist to automate this process. One such method is pool printing. In a pool printing system, a system component analyzes the requirements of the imaging job and the status and performance capabilities of a pool of compatible imaging devices, and determines which device will complete the job the soonest.
Another method involves job splitting. In job splitting, a component in a system performs an analysis of the job and of a group of compatible imaging devices to determine a proportional distribution of subparts of the imaging job, such that each device completes at approximately the same time. Another objective in a job-splitting practice is that the selection of devices and distribution results in the soonest completion of any combination within the group.
When all of the devices in the pool or group are idle and in a warmed-up state, the selection and distribution of jobs tends to be very reliable, where generally only the performance capabilities of devices are required. However, when at least one of the candidate devices is busy, and the distribution is likely to include at least one of the busy devices, the determination of availability is much more complicated. In the case of pool printing, if all of the potential devices are busy, not only is it important to know how fast a device can print a print job (i.e., performance capabilities), but also to know when a device will be available in relation to the other devices. In the case of job splitting, if at least one of the devices is busy, again it is important, in order to calculate the appropriate distribution, to know when each of the busy devices will be available.
Thus, simply determining device status (i.e., idle vs. busy) is not sufficient. Several methods exist to quantify how busy a device is. One of these methods involves counting the number of jobs currently assigned (e.g., processing, pending and spooling) to a device. The device with the smallest number of assigned jobs (e.g., print queue) is assumed to be the first available. This approach, however, is only reliable if the jobs on the devices are approximately the same size. Otherwise, the method can be substantially inaccurate, especially where the device with the smaller/smallest number of jobs has jobs substantially greater in size than the other ‘more busy’ devices.
An improved prior art approach involves estimating the total workload of the assigned jobs. One practice involves counting the number of sheets that will be output by the assigned jobs. This method is only reliable if the jobs are in the same state of processing (e.g., pending), and the amount of rendering/RIP per sheet is approximately the same. Otherwise, the method can be significantly incorrect. For example, a sheet with only plain text will render in little to no time, while a sheet with complex graphics may take a substantial amount of time. The state of the job is also important. For example, if a job is pending, none of the sheets have been rendered/RIP or output. But if a job is processing, some subset of the job is rendered/RIP and/or output.
Still another prior art approach involves counting the number of bytes in the current jobs. A job with a smaller byte size is assumed to render/RIP faster than a job of greater size. For example, a one page job with only text will be substantially smaller than a one page job with complex graphics. This method is only reliable if the jobs are in the same state of processing (e.g., pending), and the number of sheets in each job is approximately the same. For example, a 1000-page job of only plain text may still produce a spool file smaller or equal to a one-page complex graphic job. While the latter job will take longer to render a single sheet, the outputting of a 1000-sheets will dominate the elapsed time to complete the jobs.
While these and other prior art efforts take aim at addressing the issue focused upon generally by the present invention, none offers the efficiency and accuracy attained by the method of the present invention. This invention, as was briefly mentioned earlier herein is based upon taking an actual look at the exact states of current busyness (i.e., how busy?) of prospectively available but currently engaged printers (imaging output devices), and upon offering quite precise information regarding answers to this question. Engaged printers' statuses are, with particularity, assessed with respect to their respective states of current job processing, and information for each printer is generated with accuracy regarding how much of a currently-being-handled job still needs to be done. Several implementations are described herein.
Thus, the invention proposes an effective method of determining when a busy printing device will be available by weighting each sheet in the job according to its byte size and state of processing.
An imaging job is decomposed into the number of sheets. The total outputting time for the job can then be calculated from the number of sheets and the performance capabilities of the marking engine (e.g., ppm). Each sheet is further decomposed into the number of bytes of data associated with the sheet (e.g., spool data size), such that each sheet can be weighted to calculate the amount of time to render/rasterize each sheet. Each sheet in the job is then classified as to where in the processing state it is (e.g., unprocessed, RIP'd, output).
The total elapse time to process a job can then be calculated as the total time for rendering/rasterizing the unprocessed sheets plus the total time to output the unprocessed and render/rasterized sheets.
Further, practice of the invention may include retaining spool data size and render/rasterize time of render/rasterized sheets to derive a weighting method to associate the spool data size with the time to render/rasterize.
The various features and advantages offered by the present invention will become more fully apparent as the description which now follows is read in accordance with the accompanying drawings.